
function onInput(el, ele, binding, vnode) {

	function handle() {
		let val = ele.value
		// modifiers为修饰符对象，传入了float，则其float属性为true
		if (binding.modifiers.float) {
			// 清除"数字"和"."以外的字符
			val = val.replace(/[^\d.]/g, '')
			// 只保留第一个“点”号, 清除多余的
			const idx = val.indexOf('.')
			if (!(idx === -1 || idx === val.length - 1)) {
				val = val.substr(0, idx) + '.' + val.substr(idx + 1).replace(/\./g, '')
			}
			// 第一个字符如果是.号，则补充前缀0
			val = val.replace(/^\./g, '0.')
		}else if (binding.modifiers.int) {
			// 清除"数字"和"."以外的字符
			val = val.replace(/[^\d.]/g, '')
			// 只保留第一个“点”号, 清除多余的
			const idx = val.indexOf('.')
			if (!(idx === -1 || idx === val.length - 1)) {
				val = val.substr(0, idx -1)
			}
			// 第一个字符如果是.号，则补充前缀0
			val = val.replace(/^\./g, '0.')
		} else {
			val = ele.value.replace(/[^\-\d]/g, '').replace(/^(\-)*(\d*)$/, '$1$2')
		}
		ele.value = val
	}

	return handle
}

export default {
	mounted(el, binding, vnode) {
		const ele = el.tagName === 'INPUT' ? el : el.querySelector('input')
		ele.addEventListener('input', onInput(el, ele, binding, vnode), false)
	},
}